Relaxing, Shooting, Enjoying

Project Overview
Project Type: Personal
Focus: System Design, Game Framework
Role: Game Designer and Programmer
Game Engine: Processing 3
Language: Processing
Description:
Space Asteroid is a casual 2D shooter game. The player will act as a turret on a planet to protect it
from colliding by approaching asteroids. With simple interactions, players can enjoy a relaxing moment
of shooting asteroid in space. (Some people argue it's not relaxing at all... but exciting~)
Controls:
LMB = Normal Shoot
RMB = Special Shoot
E = Planet Shield
1/2/3 = Play BGM #1/2/3
P = Next Planet
Esc = Menu Scene / Battle Scene
Features:
▪ Diversified Bullet Parameters
▪ Random Asteroid Spawn and Moving
▪ Energy System
▪ Weapon System
▪ Menu System (Garage, Map, Settings)
▪ Adjustable Enemy Difficulty
Part 01 - Concept and Mood
Here are my original ideas of mechanics and art for this project.
Mechanics:
▪ Simple interaction
▪ Relaxing when playing
▪ Auto-generated objects in level
Art:
▪ Pixeled or using simple shapes
▪ Blue background and warm objects
▪ Peaceful and quiet
Mechanics Reference 1
This game is simple in shape and color, but it has decent playability. The advantage of it is to
focus on the timing and pace of interaction.
Mechanics Reference 2
This circular inside shooter is creative in gameplay. Also, the simple shapes and colors won't
distract gameplay but enhance the experience.
Mechanics Reference 3
The traditional scrolling shooting is a good prototype. I will add some variants
to make it less competitive and more relaxing and slow-paced.
Art Reference 1
The pixel style has a nice visual effect. This one also makes me to think about the theme and
background of shooting.
Art Reference 2
The flashing dots and stars make up the fantastic effect. Some foreground elements can be
transparent like this.
Art Reference 3
Stars and asteroids can be both playable and visual assets, conveying the feeling of peace
in a dynamic way.
After comprehensively considered all concepts both from mechanics and art above, I drew this original
idea sketch, including
interactable and animated objects and their behaviors:
Idea Sketch
The goal of the game is to defend the planet from asteroids' attacking. Avatar is the turret on the
planet. The
core interaction is to control the turret and shoot down approaching asteroids. Stars are flashing as
background. When an asteroid is shot down, it will split into pieces and disappear in a transition.
Animated Objects:
▪ Turret base (Moving)
▪ Turret barrel (Rotating)
▪ Bullet (Shooting)
▪ Asteroid (Approaching)
▪ Star (Flashing & Moving)
▪ Debris (Splitting & Disappearing)
I tested the interaction - shooting function as below.
Shooting Function Test 1
Shooting Function Test 2
Shooting Function Test 3
Tested Functions:
▪ Turret Rotation
▪ Mouse Tracking (Turret always aims to the mouse position)
▪ Spawn & Kill Bullet
▪ Fire Rate (Spawn Interval)
The overall class deployment is like:
UML Class Deployment
▪ Simple interaction
▪ Relaxing when playing
▪ Auto-generated objects in level
▪ Pixeled or using simple shapes
▪ Blue background and warm objects
▪ Peaceful and quiet

Mechanics Reference 1

Mechanics Reference 2

Mechanics Reference 3

Art Reference 1

Art Reference 2

Art Reference 3

Idea Sketch
▪ Turret base (Moving)
▪ Turret barrel (Rotating)
▪ Bullet (Shooting)
▪ Asteroid (Approaching)
▪ Star (Flashing & Moving)
▪ Debris (Splitting & Disappearing)

Shooting Function Test 1

Shooting Function Test 2

Shooting Function Test 3
▪ Turret Rotation
▪ Mouse Tracking (Turret always aims to the mouse position)
▪ Spawn & Kill Bullet
▪ Fire Rate (Spawn Interval)

UML Class Deployment
Part 02 - Star
Stars don’t have direct interactable behaviors, but they help create immersive background.
From the view of art, the flashing effect of them is like simulating the musical note to the BGMs.
4 point star
5 point star
8 point star - Type I
8 point star - Type II
Plus, I added circle as the 5th shape for auto-generated star types.
The star background is like this:
Space with Random Stars
Here are the core codes for star class and its UML class diagram:
Class Star - Variables
Class Star - Flashing Algorithm (Triangle Wave)
Class Star - Constructor
Class Star - UML Diagram
From the view of art, the flashing effect of them is like simulating the musical note to the BGMs.

4 point star

5 point star

8 point star - Type I

8 point star - Type II
The star background is like this:
Space with Random Stars

Class Star - Variables

Class Star - Flashing Algorithm (Triangle Wave)

Class Star - Constructor

Class Star - UML Diagram
Part 03 - Bullet
A bullet can destroy asteroids on its way into small polys (Splitting Effect). And the collect point
will decrease by the number of asteroids it shot down. According to the Kill-Energy-Regain stat, the
turret will gain energy to trigger special shoot.
Normal Bullet
Normal bullet has lower speed, less damage, higher fire rate and smaller collision
size.
Special Bullet
Special bullet has higher speed, higher damage, lower fire rate and larger collsion
size.
A bullet will be shot from the turret position to mouse positon when clicked.
The normal shoot and special shoot are like this:
Normal Shoot
Special Shoot
Normal Shoot and Special Shoot
Here are the core codes for bullet class and its UML class diagram:
Class Bullet - Variables
Class Bullet - Constructor
Class Bullet - Core Functions
Class Bullet - UML Diagram
![]() Normal Bullet |
Normal bullet has lower speed, less damage, higher fire rate and smaller collision
size.
|
![]() Special Bullet |
Special bullet has higher speed, higher damage, lower fire rate and larger collsion
size.
|
The normal shoot and special shoot are like this:
Normal Shoot
Special Shoot
Normal Shoot and Special Shoot

Class Bullet - Variables

Class Bullet - Constructor

Class Bullet - Core Functions

Class Bullet - UML Diagram
Part 04 - Planet
The main planet is the object in the center, and players need to protect it from collision of flying
asteroids.
Planet 1
Planet 2
Planet 3
Planet 4
Planet 5
Planet 6
Planet 7
Planet 8
When the planet gets hit by asteroids, it will flash in red with a collision sound effect. Also, the
remaining collect points will increase.
Planet Hit Effect
That's why we need to protect the planet and shoot down those asteroids.
Protect Different Planets
When collect point decreases into 0, skip to next level, like below:
Jump to New Planet 1
Jump to New Planet 2
Player can press E to turn on Shield to protect the planet. The shield will kill asteroid instantly, but
it
consumes energy very fast.
Planet Shield
Here are the core codes for planet class and its UML class diagram:
Class Planet - Variables
Class Planet - Core Functions
Class Planet - Constructor
Class Planet - UML Diagram
![]() Planet 1 |
![]() Planet 2 |
![]() Planet 3 |
![]() Planet 4 |
![]() Planet 5 |
![]() Planet 6 |
![]() Planet 7 |
![]() Planet 8 |
Planet Hit Effect




Protect Different Planets
Jump to New Planet 1
Jump to New Planet 2
Planet Shield

Class Planet - Variables

Class Planet - Core Functions

Class Planet - Constructor

Class Planet - UML Diagram
Part 05 - Turret
Turret is the avatar controlled by players. It can aim a target position and shoot in that direction.
It shows the key game values on it, including Energy and Remaining Target Points.
Turret
When the player moves around the mouse, the turret barrel will rotate to aim that direction at once.
So the turret barrel is always aiming to the mouse position as below:
Turret Aim Tracking 1
Turret Aim Tracking 2
Energy ring bar is on the turret. It shows how much energy you have currently.
Shoot and shield consume energy depending on stats of the weapon and turret you are using.
If the current energy is not enough, shoot and shield will be in the cool-down time. Thus, the fire rate
will be affected when energy is not enough.
The consuming of energy is as below:
Turret Energy Bar Consuming
If you are not consuming energy, it will regain slowly until it's full.
When it’s full, the energy ring will go red with a full-up sound effect as below.
Turret Energy Bar Regaining
In the center of the turret is the remaining points you need to collect for this level. 0 means pass the
level
When you shoot down an asteroid, it will decrease by 1 as below:
Turret Remaining Point Decrease
When your planet is hit by an asteroid, it will increase by the polygon number of the asteroid as below:
Turret Remaining Point Increase
Let's protect the planet !
Here are the core codes for turret class and its UML class diagram:
Class Turret - Variables
Class Turret - Displays
Class Turret - Shoot Functions
Class Turret - UML Diagram
It shows the key game values on it, including Energy and Remaining Target Points.

Turret
So the turret barrel is always aiming to the mouse position as below:
Turret Aim Tracking 1
Turret Aim Tracking 2
If the current energy is not enough, shoot and shield will be in the cool-down time. Thus, the fire rate will be affected when energy is not enough.
The consuming of energy is as below:
Turret Energy Bar Consuming
When it’s full, the energy ring will go red with a full-up sound effect as below.
Turret Energy Bar Regaining
Turret Remaining Point Decrease
Turret Remaining Point Increase




Let's protect the planet !

Class Turret - Variables

Class Turret - Displays

Class Turret - Shoot Functions

Class Turret - UML Diagram
Part 06 - Asteroid
Asteroids are enemies. They are auto-generated by an algorithm and randomized in shape, color, size,
position, move speed and rotate speed.
Asteroids
Asteroids are spawned outside the screen. They move towards the planet in the center of the screen with
different move and rotate speed.
Moving Asteroids 1
Moving Asteroids 2
Asteroids will be split into small triangles when:
▪ Hit by bullets until HP reaches 0
▪ Collided with the planet
▪ Collided with the shield triggered by the player
Asteroid Hit by Bullet
Asteroid Collided with Planet
Asteroid Collided with Shield
Here are the core codes for asteroid class and its UML class diagram:
Class Asteroid - Variables
Class Asteroid - Constructor
Class Asteroid - JudgeHit Function
Class Asteroid - UML Diagram

Asteroids
Moving Asteroids 1
Moving Asteroids 2
▪ Hit by bullets until HP reaches 0
▪ Collided with the planet
▪ Collided with the shield triggered by the player
Asteroid Hit by Bullet
Asteroid Collided with Planet
Asteroid Collided with Shield

Class Asteroid - Variables

Class Asteroid - Constructor

Class Asteroid - JudgeHit Function

Class Asteroid - UML Diagram
Part 07 - Debris
Debris is a group of small disappearing triangles, simulating the dying effect for asteroids.
Debris
When an asteroid dies, debris will be spawned at that location.
The group of triangles are moving away from the center and reducing the size and alpha in color.
Debris Spliting Effect
Here are the core codes for debris class and its UML class diagram:
Class Debris - Variables
Class Debris - Constructor
Class Debris - Core Functions
Class Debris - UML Diagram

Debris
The group of triangles are moving away from the center and reducing the size and alpha in color.
Debris Spliting Effect

Class Debris - Variables

Class Debris - Constructor

Class Debris - Core Functions

Class Debris - UML Diagram
Part 08 - BGM & SE
BGM is a static class used to manage Background Music in game.
BGM 1 - Seek
BGM 2 - Recall
BGM 3 - Peace
Here are the core codes for BGM class and its UML class diagram:
Class BGM - Variables and Init
Class BGM - Functions
Class BGM - UML Diagram
SE is a static class used to manage Sound Effect in game.
These are SE for normal and special shoot:
SE - Normal Shoot
SE - Special Shoot
SE - Energy Full
SE - Not Enough Energy
These are SE for asteroid split effect:
SE - Split 1
SE - Split 2
SE - Split 3
These are SE for asteroid hit effect:
SE - Hit by Bullet
SE - Collided with Shield
SE - Collided with Planet
These are SE for user interface:
SE - Click
SE - Hover
SE - Equip
Here are the core codes for SE class and its UML class diagram:
Class SE - Variables 1
Class SE - Variables 2
Class SE - PlaySE Functions
Class SE - UML Diagram
BGM 1 - Seek |
|
BGM 2 - Recall |
|
BGM 3 - Peace |
|

Class BGM - Variables and Init

Class BGM - Functions

Class BGM - UML Diagram
SE - Normal Shoot |
|
SE - Special Shoot |
|
SE - Energy Full |
|
SE - Not Enough Energy |
|
SE - Split 1 |
|
SE - Split 2 |
|
SE - Split 3 |
|
SE - Hit by Bullet |
|
SE - Collided with Shield |
|
SE - Collided with Planet |
|
SE - Click |
|
SE - Hover |
|
SE - Equip |
|

Class SE - Variables 1

Class SE - Variables 2

Class SE - PlaySE Functions

Class SE - UML Diagram
Part 09 - Scene Battle
Like the concept of level BP in Unreal, the battle scene is the scene class containing instances of all
classes created
before. It's the stage where the show takes place.
Scene Battle 1
Scene Battle 2
Here are the core codes for SE class and its UML class diagram:
Class Scene Battle - Variables
Class Scene Battle - Initialization
Class Scene Battle - Update
Class Scene Battle - UpdateAsteroids & KillAsteroid
Class Scene Battle - UML Diagram

Scene Battle 1

Scene Battle 2

Class Scene Battle - Variables

Class Scene Battle - Initialization

Class Scene Battle - Update

Class Scene Battle - UpdateAsteroids & KillAsteroid

Class Scene Battle - UML Diagram
Part 10 - Menu System
Players can press ESC to change between battle and menu scene.
Battle BGM will pause and menu BGM will play.
Scene Change between Battle and Menu
Menu system contains three tabs: Garage, Map, and Settings.
Garage is the interface where players can view and change equipments.
Garage Tab UI Introduction
Turret Slot
Turret determines the basic attributes.
Attributes
Full Energy (point):
Determine the maximum capacity for energy. Energy is used for shooting and shielding.
Auto Energy Regain (point/frame):
Determine the amount of gradual auto energy regain.
Kill Energy Regain (point):
Determine the amount of energy regain when killed an asteroid.
Defense Energy Cost (point/time):
Determine energy cost to trigger shield defense.
Defense Range (Pixel):
Determine shield defense extra radius on the circle of main planet
Primary Weapon Slot
Primary Weapon determines LMB shoot attributes.
Attributes
Energy Cost (point):
Determine the energy cost for one shot.
Damage (point):
Determine the damage dealt to hit asteroid.
Pierce (point):
Determine maximum hit target number after piercing through (1 = no pierce).
Shoot Rate (r/sec):
Determine how many shots can fire in a second.
Shoot Speed (Pixel/frame):
Determine bullet flying speed after shoot it out.
Secondary Weapon Slot
Primary Weapon determines LMB shoot attributes.
Attributes
Energy Cost (point):
Determine the energy cost for one shot.
Damage (point):
Determine the damage dealt to hit asteroid.
Pierce (point):
Determine maximum hit target number after piercing through (1 = no pierce).
Shoot Rate (r/sec):
Determine how many shots can fire in a second.
Shoot Speed (Pixel/frame):
Determine bullet flying speed after shoot it out.
With these weapon types and attributes, it's easy to create diversified weapons.
Shoot rate = 5r/s
Bullet shape = drop
Color = pink
Shoot rate = 10r/s
Bullet shape = curve
Color = yellow
Map tab contains Planet and Asteroid info panels and attributes.
Planet
Living Area :
The size of living area.
Population :
The population on this planet.
Tech Level :
The technology level of this planet.
Asteroid
HP (point):
When HP <=0, asteroid split and die.
Number (count):
Determine how many asteroids will be spawned in screen.
Speed Range (pixel/frame):
Determine spawning asteroid speed range.
Setting tab contains UI to control game settings, currently just include BGM and SE volumes.
Setting
BGM Volume :
Controls the volume of all BGMs, including battle scene and menu scene.
SE Volume :
Controls the volume of all sound effects, including battle scene and menu scene.
Part 11 - Game Data
For this project, my focus is building gameplay framework, not gameplay experience or level design. So
I haven't playtested and tuned all the values. The game data framework contains design instances as
below.
Table of Turrets
ID
Name
Image
Full Energy
Auto Energy Regain
Kill Energy Regain
Defense Energy Cost
Defense Range
Turret 01
HVM-003
MG Sentry

100
0.3
5
10
75
Turret 02
CM-017
Supernova

120
0.35
10
9
100
Turret 03
CM-026
Zeus Judge

150
0.4
12
8
120
Turret 04
HIK-005
Protector

180
0.45
15
5
150
Turret 05
RSN-031
Energizer

200
0.6
18
8
135
Table of Primary Weapons
ID
Name
Image
Energy Cost
Damage
Pierce
Shoot Rate
Shoot Speed
Primary 01
CM-365
Sub-light COM2

12
1
1
6
10
Primary 02
CM-017
Supernova

10
2
2
3
12
Primary 03
CM-389
Starfury

8
3
3
5
15
Table of Secondary Weapons
ID
Name
Image
Energy Cost
Damage
Pierce
Shoot Rate
Shoot Speed
Secondary 01
HIKS-R40
Terminator

50
3
3
1
24
Secondary 02
TKN-108
Zerfallen

60
4
4
3
28
Secondary 03
SST-102
Jagdefaust

40
5
5
4
32
Table of Planets
ID
Name
Image
Living Area
Population
Tech Level
Planet 01
Sicrov

860000
1265462
5
Planet 02
Vizuno

350000
3232251
6
Planet 03
Ragao

150000
2154632
3
Planet 04
Brethustea

180000
4685232
8
Planet 05
Siater

520000
3608495
4
Planet 06
Masonoe

630000
1862224
2
Planet 07
Dolosie

90000
912140
6
Planet 08
Carth II

120000
2780921
9
Reflection
I learned a lot from this project, from design to programming, from auto-generated elements to
diversified values, from battle scenes to menu scenes.
▪ First, processing is not a game engine but a interactive design tool. But I challenged myself
to use it and implemented all the functionalities that I conceptualized from design
perspective.
▪ I was wearing two hat through the whole project, Game Designer and Programmer. But it might
be a bit more of programming than design, like 30% design + 70% programming. But switching between
these two lenses can always bring me new ideas.
▪ For this project, I'm not just focusing on functionalities, but also the organization of
codes. I tried to be as professional as I could to split one functionality into different classes.
I spent about 30% of time just refactoring codes to make it clean to maintain and extend.
▪ In terms of programming languages, processing is built on Java. I never touched Java before,
but all the concepts are very similar to C#. This project tells me that the language won't be an issue
as long as you have clear mind for what you are doing.
▪ It's my first time to build my database outside of the engine. I have more insights about the
value of Model-View-Controller pattern. In game programming, it's the three layers of Data, Visual,
and
Logic.
▪ From the view of game design, the fast iterations of prototype gives me better understanding
about "Diversified Elements". I really want to go deeper about the weapon system. Also, I learned to
analyze a design and then break it up into parts, like considering if it's a design for visual or data
or both of them.
Battle BGM will pause and menu BGM will play.

Scene Change between Battle and Menu

Garage Tab UI Introduction

Turret Slot
Turret determines the basic attributes.Attributes
Full Energy (point):
Determine the maximum capacity for energy. Energy is used for shooting and shielding.
Auto Energy Regain (point/frame):
Determine the amount of gradual auto energy regain.
Kill Energy Regain (point):
Determine the amount of energy regain when killed an asteroid.
Defense Energy Cost (point/time):
Determine energy cost to trigger shield defense.
Defense Range (Pixel):
Determine shield defense extra radius on the circle of main planet

Primary Weapon Slot
Primary Weapon determines LMB shoot attributes.Attributes
Energy Cost (point):
Determine the energy cost for one shot.
Damage (point):
Determine the damage dealt to hit asteroid.
Pierce (point):
Determine maximum hit target number after piercing through (1 = no pierce).
Shoot Rate (r/sec):
Determine how many shots can fire in a second.
Shoot Speed (Pixel/frame):
Determine bullet flying speed after shoot it out.

Secondary Weapon Slot
Primary Weapon determines LMB shoot attributes.Attributes
Energy Cost (point):
Determine the energy cost for one shot.
Damage (point):
Determine the damage dealt to hit asteroid.
Pierce (point):
Determine maximum hit target number after piercing through (1 = no pierce).
Shoot Rate (r/sec):
Determine how many shots can fire in a second.
Shoot Speed (Pixel/frame):
Determine bullet flying speed after shoot it out.

Shoot rate = 5r/s

Bullet shape = drop

Color = pink

Shoot rate = 10r/s

Bullet shape = curve

Color = yellow

Planet
Living Area :
The size of living area.
Population :
The population on this planet.
Tech Level :
The technology level of this planet.
Asteroid
HP (point):
When HP <=0, asteroid split and die.
Number (count):
Determine how many asteroids will be spawned in screen.
Speed Range (pixel/frame):
Determine spawning asteroid speed range.

Setting
BGM Volume :
Controls the volume of all BGMs, including battle scene and menu scene.
SE Volume :
Controls the volume of all sound effects, including battle scene and menu scene.
Part 11 - Game Data
For this project, my focus is building gameplay framework, not gameplay experience or level design. So
I haven't playtested and tuned all the values. The game data framework contains design instances as
below.
Table of Turrets
ID
Name
Image
Full Energy
Auto Energy Regain
Kill Energy Regain
Defense Energy Cost
Defense Range
Turret 01
HVM-003
MG Sentry

100
0.3
5
10
75
Turret 02
CM-017
Supernova

120
0.35
10
9
100
Turret 03
CM-026
Zeus Judge

150
0.4
12
8
120
Turret 04
HIK-005
Protector

180
0.45
15
5
150
Turret 05
RSN-031
Energizer

200
0.6
18
8
135
Table of Primary Weapons
ID
Name
Image
Energy Cost
Damage
Pierce
Shoot Rate
Shoot Speed
Primary 01
CM-365
Sub-light COM2

12
1
1
6
10
Primary 02
CM-017
Supernova

10
2
2
3
12
Primary 03
CM-389
Starfury

8
3
3
5
15
Table of Secondary Weapons
ID
Name
Image
Energy Cost
Damage
Pierce
Shoot Rate
Shoot Speed
Secondary 01
HIKS-R40
Terminator

50
3
3
1
24
Secondary 02
TKN-108
Zerfallen

60
4
4
3
28
Secondary 03
SST-102
Jagdefaust

40
5
5
4
32
Table of Planets
ID
Name
Image
Living Area
Population
Tech Level
Planet 01
Sicrov

860000
1265462
5
Planet 02
Vizuno

350000
3232251
6
Planet 03
Ragao

150000
2154632
3
Planet 04
Brethustea

180000
4685232
8
Planet 05
Siater

520000
3608495
4
Planet 06
Masonoe

630000
1862224
2
Planet 07
Dolosie

90000
912140
6
Planet 08
Carth II

120000
2780921
9
ID | Name | Image | Full Energy | Auto Energy Regain | Kill Energy Regain | Defense Energy Cost | Defense Range |
---|---|---|---|---|---|---|---|
Turret 01 | HVM-003 MG Sentry |
![]() |
100 | 0.3 | 5 | 10 | 75 |
Turret 02 | CM-017 Supernova |
![]() |
120 | 0.35 | 10 | 9 | 100 |
Turret 03 | CM-026 Zeus Judge |
![]() |
150 | 0.4 | 12 | 8 | 120 |
Turret 04 | HIK-005 Protector |
![]() |
180 | 0.45 | 15 | 5 | 150 |
Turret 05 | RSN-031 Energizer |
![]() |
200 | 0.6 | 18 | 8 | 135 |
ID | Name | Image | Energy Cost | Damage | Pierce | Shoot Rate | Shoot Speed |
---|---|---|---|---|---|---|---|
Primary 01 | CM-365 Sub-light COM2 |
![]() |
12 | 1 | 1 | 6 | 10 |
Primary 02 | CM-017 Supernova |
![]() |
10 | 2 | 2 | 3 | 12 |
Primary 03 | CM-389 Starfury |
![]() |
8 | 3 | 3 | 5 | 15 |
ID | Name | Image | Energy Cost | Damage | Pierce | Shoot Rate | Shoot Speed |
---|---|---|---|---|---|---|---|
Secondary 01 | HIKS-R40 Terminator |
![]() |
50 | 3 | 3 | 1 | 24 |
Secondary 02 | TKN-108 Zerfallen |
![]() |
60 | 4 | 4 | 3 | 28 |
Secondary 03 | SST-102 Jagdefaust |
![]() |
40 | 5 | 5 | 4 | 32 |
ID | Name | Image | Living Area | Population | Tech Level |
---|---|---|---|---|---|
Planet 01 | Sicrov | ![]() |
860000 | 1265462 | 5 |
Planet 02 | Vizuno | ![]() |
350000 | 3232251 | 6 |
Planet 03 | Ragao | ![]() |
150000 | 2154632 | 3 |
Planet 04 | Brethustea | ![]() |
180000 | 4685232 | 8 |
Planet 05 | Siater | ![]() |
520000 | 3608495 | 4 |
Planet 06 | Masonoe | ![]() |
630000 | 1862224 | 2 |
Planet 07 | Dolosie | ![]() |
90000 | 912140 | 6 |
Planet 08 | Carth II | ![]() |
120000 | 2780921 | 9 |
Reflection
I learned a lot from this project, from design to programming, from auto-generated elements to
diversified values, from battle scenes to menu scenes.
▪ First, processing is not a game engine but a interactive design tool. But I challenged myself
to use it and implemented all the functionalities that I conceptualized from design
perspective.
▪ I was wearing two hat through the whole project, Game Designer and Programmer. But it might
be a bit more of programming than design, like 30% design + 70% programming. But switching between
these two lenses can always bring me new ideas.
▪ For this project, I'm not just focusing on functionalities, but also the organization of
codes. I tried to be as professional as I could to split one functionality into different classes.
I spent about 30% of time just refactoring codes to make it clean to maintain and extend.
▪ In terms of programming languages, processing is built on Java. I never touched Java before,
but all the concepts are very similar to C#. This project tells me that the language won't be an issue
as long as you have clear mind for what you are doing.
▪ It's my first time to build my database outside of the engine. I have more insights about the
value of Model-View-Controller pattern. In game programming, it's the three layers of Data, Visual,
and
Logic.
▪ From the view of game design, the fast iterations of prototype gives me better understanding
about "Diversified Elements". I really want to go deeper about the weapon system. Also, I learned to
analyze a design and then break it up into parts, like considering if it's a design for visual or data
or both of them.
▪ First, processing is not a game engine but a interactive design tool. But I challenged myself to use it and implemented all the functionalities that I conceptualized from design perspective.
▪ I was wearing two hat through the whole project, Game Designer and Programmer. But it might be a bit more of programming than design, like 30% design + 70% programming. But switching between these two lenses can always bring me new ideas.
▪ For this project, I'm not just focusing on functionalities, but also the organization of codes. I tried to be as professional as I could to split one functionality into different classes. I spent about 30% of time just refactoring codes to make it clean to maintain and extend.
▪ In terms of programming languages, processing is built on Java. I never touched Java before, but all the concepts are very similar to C#. This project tells me that the language won't be an issue as long as you have clear mind for what you are doing.
▪ It's my first time to build my database outside of the engine. I have more insights about the value of Model-View-Controller pattern. In game programming, it's the three layers of Data, Visual, and Logic.
▪ From the view of game design, the fast iterations of prototype gives me better understanding about "Diversified Elements". I really want to go deeper about the weapon system. Also, I learned to analyze a design and then break it up into parts, like considering if it's a design for visual or data or both of them.